Entropy coding is widely used in the coding of video, audio, and other data sets. There are many types of entropy coding, for example, variable length coding (VLC) or arithmetic coding. In either type of coding, the number of bits used to represent a syntax element may vary widely, and the number of bits may generally vary with the values of each syntax element. Therefore, the number of bits used to code a syntax element generally may not be known before the syntax element is coded in an encoder or decoded in a decoder.
For VLC decoding, a normal fast logic design may decode one syntax element per clock, at clock rates that may be typical of synthesized logic. Arithmetic coding on the other hand, may typically utilize modern decoders to decode at most approximately one bin per clock or slower, and there may be on average more than one bin to decode for each bit in the bit stream.
One of the trends in video coding includes an increase in the throughput rate that may be driven by increases in both picture sizes and frame rates. For example, a move from standard definition television (SDTV) to the high definition television (HDTV) standard may involve an increase of six times the throughput rate. A move to 1080 p video at 60 frames per second may involve another doubling of the throughput rate. A migration to 4K×2K picture size may be another factor of four increase in the throughput rate. The support for 3-D video may further double the frame rate, and frame rates may increase to 120 Hz, which may involve yet another doubling of the throughput rate. This trend significantly increases the challenges of real time entropy decoding. For example, decoding a video stream in real time using the H.264/MPEG-4 AVC standard at High Profile, with a frame size of 1920×1088 pixels and a frame rate of 60 frames per second may require decoding 489,600 [(1920*1088)/256*60)] macroblocks per second, while decoding a stream with a frame size of 4096×2160 pixels at 120 frames per second may require decoding 4,147,200 [(4096*2160)/256*120] macroblocks per second. Each macroblock may comprise thousands of entropy-coded bits, for example.
Another trend in video coding is towards more efficient compression coding. Arithmetic coding is generally more efficient than VLC coding, while it may be significantly more complex, and current arithmetic coding designs may have lower throughput than current VLC designs. Some improvements in the coding efficiency of entropy coding may aggravate real time entropy decoding. The trend towards more efficient compression coding also may make it unattractive to add information to a bit stream to facilitate fast decoding.
Furthermore, another trend in video coding is towards layered coding, wherein coded video pictures and sequences may be represented by multiple layers of data. The use of layered coding may increase the number of syntax elements that are decoded in order to decode and reconstruct each picture. Another trend in video coding is towards low latency encoding and decoding, which may make some fast coding and decoding approaches less practical.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.